package com.ssy.lingxi.pay.api.model.vo.request.ccb;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 建行数字人民币支付请求参数
 * @author jw.chen
 * @version 2.0.0
 * @date 2021/12/27
 **/
@Data
public class CcbDigitalPayVo implements Serializable {
    private static final long serialVersionUID = 4192452043392033560L;

    /**
     * 支付类型：1-动态二维码(pc端); 2-H5(app端)
     * 枚举类：CcbDigitalPayTypeEnum
     */
    @NotNull(message = "支付类型不能为空")
    private Integer payType;

    /**
     * 商户代码
     */
    @NotBlank(message = "商户代码不能为空")
    @Size(max = 21, message = "商户代码最长21个字符")
    private String merchantId;

    /**
     * 商户柜台代码
     */
    @NotBlank(message = "商户柜台代码不能为空")
    @Size(max = 9, message = "商户柜台代码最长9个字符")
    private String posId;

    /**
     * 商户分行代码
     */
    @NotBlank(message = "分行代码不能为空")
    @Size(max = 30, message = "分行代码最长30个字符")
    private String branchId;

    /**
     * 二级商户代码
     */
    private String subMerchantId;

    /**
     * 柜台公钥
     */
    @NotBlank(message = "柜台公钥不能为空")
    private String publicKey;

    /**
     * 支付订单号
     */
    @NotBlank(message = "支付订单号不能为空")
    @Size(max = 30, message = "支付订单号最长30个字符")
    private String orderCode;

    /**
     * 付款金额
     */
    @NotNull(message = "付款金额不能为空")
    private BigDecimal payMent;

    /**
     * 备注1 非必填，一般作为商户自定义备注信息使用，可在对账单中显示
     */
    private String remark1;

    /**
     * 备注2 非必填，一般作为商户自定义备注信息使用，可在对账单中显示
     */
    private String remark2;

    /**
     * 支付订单超时时间
     * 格式：YYYYMMDDHHMMSS如：20120214143005
     * 银行系统时间 > TIMEOUT时拒绝交易，若送空值则不判断超时。
     */
    private String timeout;

    /**
     * 商户结算账号，央行app使用
     */
    private String cdtrWltId;

    /**
     * 商户URL，退出支付流程时返回商户URL(H5支付才生效，二维码支付不生效)
     */
    private String mrchUrl;

    /**
     * 透传参数，在支付结果通知中原样返回
     */
    private String attach;
}
